//#include <stdio.h>
//#include <stdlib.h>
//
//int main() 
//{
//    int n, m;
//    scanf_s("%d %d", &n, &m);
//
//    long long* diff1 = (long long*)calloc(n + 2, sizeof(long long));
//    long long* diff2 = (long long*)calloc(n + 2, sizeof(long long));
//    long long* diff3 = (long long*)calloc(n + 2, sizeof(long long));
//
//    for (int i = 0; i < m; i++)
//    {
//        int l, r, k;
//        scanf_s("%d %d %d", &l, &r, &k);
//        if (k == 1) 
//        {
//            diff1[l]++;
//            if (r + 1 <= n) diff1[r + 1]--;
//        }
//        else if (k == 2) 
//        {
//            diff2[l]++;
//            if (r + 1 <= n) diff2[r + 1]--;
//        }
//        else if (k == 3) 
//        {
//            diff3[l]++;
//            if (r + 1 <= n) diff3[r + 1]--;
//        }
//    }
//
//    long long* cnt1 = (long long*)calloc(n + 1, sizeof(long long));
//    long long* cnt2 = (long long*)calloc(n + 1, sizeof(long long));
//    long long* cnt3 = (long long*)calloc(n + 1, sizeof(long long));
//
//    long long cur1 = 0;
//    for (int i = 1; i <= n; i++) 
//    {
//        cur1 += diff1[i];
//        cnt1[i] = cur1;
//    }
//
//    long long cur2 = 0;
//    for (int i = 1; i <= n; i++) 
//    {
//        cur2 += diff2[i];
//        cnt2[i] = cur2;
//    }
//
//    long long cur3 = 0;
//    for (int i = 1; i <= n; i++)
//    {
//        cur3 += diff3[i];
//        cnt3[i] = cur3;
//    }
//
//    long long count = 0;
//    for (int i = 1; i <= n; i++) 
//    {
//        if (cnt1[i] > 0 && cnt2[i] > 0 && cnt3[i] == 0) 
//        {
//            count++;
//        }
//    }
//    printf("%lld\n", count);
//    free(diff1);
//    free(diff2);
//    free(diff3);
//    free(cnt1);
//    free(cnt2);
//    free(cnt3);
//    return 0;
//}

#include <stdio.h>
#include <stdlib.h>

#define MOD 1000000007
#define MAX_N 100000

int main() 
{
    static long long f[MAX_N + 1];
    static long long one[MAX_N + 1];
    static long long zero[MAX_N + 1];

    f[1] = 0;
    f[2] = 0;
    one[1] = 0;
    one[2] = 1;
    zero[1] = 1;
    zero[2] = 0;

    for (int i = 3; i <= MAX_N; i++)
    {
        one[i] = (one[i - 2] + one[i - 1]) % MOD;
        zero[i] = (zero[i - 2] + zero[i - 1]) % MOD;
        long long cross = (one[i - 2] * zero[i - 1]) % MOD;
        f[i] = (f[i - 2] + f[i - 1] + cross) % MOD;
    }
    int T;
    scanf_s("%d", &T);
    while (T--)
    {
        int n;
        scanf_s("%d", &n);
        printf("%lld\n", f[n]);
    }
    return 0;
}